
package com.jf.cloud.multishop.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.multishop.model.ShopCollection;
import com.jf.cloud.multishop.vo.ShopCollectionVO;

import java.util.List;

/**
 * 用户店铺收藏记录
 *
 * @author zz
 * @date 2021-02-23 14:41:42
 */
public interface ShopCollectionService {

    /**
     * 根据用户店铺收藏记录id获取用户店铺收藏记录
     *
     * @param collectionId 用户店铺收藏记录id
     * @return 用户店铺收藏记录
     */
    ShopCollectionVO getByCollectionId(Long collectionId);

    /**
     * 保存用户店铺收藏记录
     * @param userCollectionShop 用户店铺收藏记录
     */
    void save(ShopCollection userCollectionShop);

    /**
     * 更新用户店铺收藏记录
     * @param userCollectionShop 用户店铺收藏记录
     */
    void update(ShopCollection userCollectionShop);

    /**
     * 根据用户id和店铺名称获取收藏店铺分页列表
     * @param pageDTO 分页数据
     * @param userId 用户id
     * @param shopName 店铺名称
     * @return 分页收藏列表
     */
    PageVO<ShopCollectionVO> getUserCollectionShopPageByUserIdAndShopName(PageDTO pageDTO, Long userId, String shopName);

    /**
     * 根据用户id和店铺id获取收藏数量
     * @param userId 用户id
     * @param shopId 店铺id
     * @return 收藏数量
     */
    int countByShopIdAndUserId(Long shopId, Long userId);

    /**
     * 根据店铺id 添加/取消收藏
     * @param shopId 店铺id
     * @param userId 用户id
     * @return  添加or取消收藏
     */
    Boolean addOrCancel(Long shopId, Long userId);

    /**
     * 批量取消收藏
     * @param shopIds 店铺ids
     * @param userId 用户id
     * @return 批量添加结果
     */
    boolean batchCancel(List<Long> shopIds, Long userId);
}
